/*******************************************************************************
* COPYRIGHT LIPUJUN TECH CO.,LTD
********************************************************************************
* 文件名称:  hwInit.c
* 功能描述:
* 使用说明:  无
* 文件作者:  LIPUJUN
* 编写日期:  2018/10/19
* 修改历史:
* 修改版本  修改日期       修改人   修改内容
* ------------------------------------------------------------------------------
  01a       2018/10/19       李普军   创建
*******************************************************************************/

/******************************* 包含文件声明 ********************************/
#include "common.h"
#include "task.h"
#include "user_core.h"
#include "msg_core.h"

/******************************* 局部宏定义 **********************************/
/******************************* 全局变量定义/初始化 *************************/
extern AIR_APP_INFO_T stMqttMsgInfo;

/******************************* 局部常数和类型定义 **************************/
/******************************* 函数实现 ************************************/

/*******************************************************************************
*   函数名称: brdInit
*   功    能: 入口函数
*   函数类型:
*   参    数: 无
*   参数名称       类  型             输入/输出         描述
*
*   函数返回: OK或失败错误码
*   说    明:
*******************************************************************************/



INT32 air_init (void)
{
    init_system();
    printBootLogo (0);
    msg_init();		//消息队列结构体初始化
    user_init();		//业务相关初始化

    printLogo ();
    creatTask ();		//创建线程

    sleep(1);
    printClientInfo();

    return OK;
}

char* GetCompileTime(char *datatime)
{
    const char year_month[12][4] =  { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
    char compile_date[20] = {0}, compile_time[20] = {0};
    char str_month[4] = {0};
    int year, month, day, hour, minutes, seconds,i;

    if(datatime == NULL)
        return "";
    sprintf(compile_date, "%s", __DATE__); // "Aug 23 2016"
    sprintf(compile_time, "%s", __TIME__); // "10:59:19"

    sscanf(compile_date, "%s %d %d", str_month, &day, &year);
    sscanf(compile_time, "%d:%d:%d", &hour, &minutes, &seconds);

    for(i = 0; i < 12; ++i){
        if(0 == strcmp(year_month[i] ,str_month)){
            month = i + 1;
            break;
        }
    }

    sprintf(datatime,"%d-%.2d-%.2d %.2d:%.2d:%.2d", year, month, day, hour, minutes, seconds);
    intTime2Str(strTime2Int(datatime) + 28800 ,datatime);
    return datatime;
}

int main(int argc, char* argv[])
{
    INT32 ret = 0;
    char buf[20] = {0};    

    memset ((void *)&stMqttMsgInfo, 0x00, sizeof(AIR_APP_INFO_T));
   
    if (argc < 2){//无参数
        ret = readConfig(AIR_DEFAULT_CONFIG);
    }else if (argc < 3){ // 1个参数
        if((strcmp (argv[1], "-h") == 0) || (strcmp (argv[1], "-H") == 0)){
            printf ("air_flash -c air.conf\n");
            return OK;
        } else if ((strcmp (argv[1], "-v") == 0) || (strcmp (argv[1], "-V") == 0)){
            /* example */
            if(SF_NAME != NULL){
                printf ("    App Name : %s\n", SF_NAME);	
            }
            if(SF_TYPE != NULL){
                printf ("Project Name : %s\n", SF_TYPE);	
            }
            if(SF_VER != NULL){
                printf ("     Version : %s\n", SF_VER);	
            }
            if(SF_TIME != NULL){
                printf ("Compile Time : %s\n", SF_TIME);
            }else{
                printf ("Compile Time : %s\n", GetCompileTime(buf));
            }		
            return OK;
        } else if ((strcmp (argv[1], "-c") == 0) || (strcmp (argv[1], "-C") == 0)){
            printf ("air_flash -c air.conf\n");
            return (-1);
        } else{
            ret = readConfig(argv[1]);
        }
    }else if(argc < 4){//2个参数
        if ((strcmp (argv[1], "-c") == 0) || (strcmp (argv[1], "-C") == 0)){
            ret = readConfig(argv[2]);
        }
    }
    if(!ret){
        Error ("\n air_flash -c air.conf\n");
        return (-1);
    }
 
    air_init ();   

    while(1)
    {
        sleep(10);
        if(atoi(stMqttMsgInfo.diskSize) == 0){	    
            get_diskSize (stMqttMsgInfo.diskSize);
        }
    }

    return OK;
}

/******************************* 源文件结束 **********************************/
